#include "error.h"

#include <stdio.h>
#include <errno.h>
#include <stdlib.h>

#if !defined(_WIN32)
#include <netdb.h>
#endif

// 使用 perror 而避免非线程安全的 strerror 。
void
unix_error(const char *msg)
{
    char buf[10240];
    snprintf(buf, sizeof(buf), "%s-%d", msg, errno);
    perror(buf);
    exit(1);
}

void
posix_error(int code, const char *msg)
{
    char buf[10240];
    snprintf(buf, sizeof(buf), "%s-%d", msg, code);
    errno = code;
    perror(buf);
    exit(1);
}

void
gai_error(int code, const char *msg)
{
#if !defined(_WIN32)
    fprintf(stderr, "%s-%d: %s\n", msg, code, gai_strerror(code));
#else
    fprintf(stderr, "%s-%d\n", msg, code);
#endif
    exit(1);
}

